package com.wjk.kylin.modules.system.role.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.wjk.kylin.core.common.entity.BaseEntity;
import com.wjk.kylin.core.common.valid.insert;
import com.wjk.kylin.core.common.valid.update;
import com.wjk.kylin.core.constant.CommonConstant;
import lombok.Data;
import lombok.ToString;
import org.apache.commons.lang3.StringUtils;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;

/**
 * <p>
 * 角色表
 * </p>
 *
 * @author wangjkui
 * @since 2020-06-01
 */
@Data
@ToString
@TableName("sys_role")
public class Role extends BaseEntity<Role> {

    /** 状态（0正常 1停用*/
    @TableField("status")
    @Pattern(regexp="^[0-1]",message = "状态只能为0或1",groups = {insert.class, update.class})
    private String status;

    /** 角色名称 */
    @NotBlank(message = "角色名称不能为空",groups = {insert.class})
    @Size(min = 0, max = 30, message = "角色名称长度不能超过30个字符",groups = {insert.class, update.class})
    @TableField("name")
    private String name;

    /** 角色权限 */
    @NotBlank(message = "权限字符不能为空",groups = {insert.class, update.class})
    @Size(min = 0, max = 100, message = "权限字符长度不能超过100个字符",groups = {insert.class, update.class})
    @TableField("code")
    private String code;

    /** 数据范围（1：所有数据权限；2：自定义数据权限；3：本部门数据权限；4：本部门及以下数据权限） */
    @TableField("data_scope")
    private String dataScope;

    /** 角色排序 */
    @TableField("sort")
    private Integer sort;

    //=======================================================
    /** 菜单组 */
    @TableField(exist = false)
    private String[] menuIds;

    /** 部门组（数据权限） */
    @TableField(exist = false)
    private String[] deptIds;

    //=======================================================
    public boolean isAdmin() {
        return isAdmin(this.getId());
    }

    public static boolean isAdmin(String roleId) {
        return StringUtils.isNotBlank(roleId) && "1".equals(roleId);
    }
}
